﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;

using QLTTAN.BLL;
using QLTTAN.DTO;
namespace QLTTAN.Form
{
    public partial class frmTimKiemHocVien : DevExpress.XtraEditors.XtraForm
    {
        HocVienBLL HV_BLL;
        CT_LopHocBLL CT_LH_BLL;
        LopHocBLL LH_BLL;

        public bool isEnablebtnChonHV = false;
        public bool? isTinhTrang = null;
        public int MaHVSelected = -1;
        public List<int> lstMaHVSelected;
        public bool isMultiSelectGrid = false;

        public frmTimKiemHocVien()
        {
            InitializeComponent();
        }

        private void FillDataInLookUpEditLopHoc()
        {
            try
            {
                lookUpEditLopHoc.Properties.DataSource = LH_BLL.LopHoc_Load_MaxKhoaHoc();
                lookUpEditLopHoc.Properties.ValueMember = "MaLop";
                lookUpEditLopHoc.Properties.DisplayMember = "TenLoaiLop";
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, "Thông báo!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }     
        }

        private void frmTimKiemHocVien_Load(object sender, EventArgs e)
        {
            HV_BLL = new HocVienBLL();
            CT_LH_BLL = new CT_LopHocBLL();
            LH_BLL = new LopHocBLL();

            btnChonHV.Enabled = isEnablebtnChonHV;

            FillDataInLookUpEditLopHoc();

            lstMaHVSelected = new List<int>();

            if (isTinhTrang != false)
            {
                TrinhDoMuonHoc.Visible = false;
            }

            if(isTinhTrang != null)
            {
                checkBoxTinhTrang.Enabled = false;
                gridViewTimHocVien.OptionsSelection.MultiSelect = isMultiSelectGrid;

                if (isTinhTrang == true)
                {
                    checkBoxLopHoc.Checked = true;
                }
            }

            try
            {
                LopHocDTO LH_DTO = new LopHocDTO();
                HocVienDTO HV_DTO = new HocVienDTO();

                LH_DTO.MaLop = -1;
                HV_DTO.TinhTrang = isTinhTrang;

                DataTable dt = HV_BLL.HocVien_Find(HV_DTO, LH_DTO);

                gridCtrlTimHocVien.DataSource = dt;
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, "Thông báo!!!", MessageBoxButtons.OK);
            }
        }

        private void btnTim_Click(object sender, EventArgs e)
        {
            try
            {
                LopHocDTO LH_DTO = new LopHocDTO();
                HocVienDTO HV_DTO = new HocVienDTO();

                LH_DTO.MaLop = -1;
                HV_DTO.TinhTrang = isTinhTrang;

                if (checkBoxTinhTrang.Checked == true && cbxTinhTrang.SelectedIndex > -1)
                {
                    HV_DTO.TinhTrang = Convert.ToBoolean(cbxTinhTrang.SelectedIndex);
                }

                if (checkBoxLopHoc.Checked == true && lookUpEditLopHoc.EditValue != null)
                {
                    LH_DTO.MaLop = int.Parse(lookUpEditLopHoc.EditValue.ToString());
                }

                if (checkBoxTenHV.Checked == true)
                {
                    HV_DTO.TenHV = txtTenHV.Text.Trim();
                }
                else
                {
                    HV_DTO.TenHV = string.Empty;
                }

                if (checkBoxGioiTinh.Checked == true && cbxGioiTinh.SelectedIndex > -1)
                {
                    HV_DTO.GioiTinh = Convert.ToBoolean(cbxGioiTinh.SelectedIndex);
                }

                if (checkBoxDiaChi.Checked == true)
                {
                    HV_DTO.DiaChi = txtDiaChi.Text.Trim();
                }

                gridCtrlTimHocVien.DataSource = HV_BLL.HocVien_Find(HV_DTO, LH_DTO);
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, "Thông báo!!!", MessageBoxButtons.OK);
            }
        }

        private void btnHienThiLai_Click(object sender, EventArgs e)
        {
            cbxTinhTrang.SelectedIndex = -1;
            lookUpEditLopHoc.ItemIndex = -1;
            cbxGioiTinh.SelectedIndex = -1;
            txtTenHV.Text = string.Empty;
            txtDiaChi.Text = string.Empty;

            checkBoxTinhTrang.Checked = false;
            checkBoxLopHoc.Checked = false;
            checkBoxGioiTinh.Checked = false;
            checkBoxTenHV.Checked = false;
            checkBoxDiaChi.Checked = false;

            frmTimKiemHocVien_Load(sender, e);
        }

        private void btnChonHV_Click(object sender, EventArgs e)
        {
            // Chỉ đc chọn 1 học viên dùng để thu học phí.
            if(isTinhTrang == true)
            {
                DataRow row = gridViewTimHocVien.GetDataRow(gridViewTimHocVien.FocusedRowHandle);

                if (row != null)
                {
                    MaHVSelected = int.Parse(gridViewTimHocVien.GetDataRow(gridViewTimHocVien.FocusedRowHandle)["MaHV"].ToString());

                    this.Close();
                }
                else
                {
                    XtraMessageBox.Show("Bạn chưa chọn học viên?", "Thông báo!!!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }

            // Chọn được nhiều học viên để xếp vào phòng thi xếp lớp.
            if (isTinhTrang == false)
            {
                if (gridViewTimHocVien.GetSelectedRows().Count() == 0)
                {
                    XtraMessageBox.Show("Bạn chưa chọn học viên?", "Thông báo!!!", MessageBoxButtons.OK);
                    return;
                }

                foreach (int i in gridViewTimHocVien.GetSelectedRows())
                {
                    lstMaHVSelected.Add(int.Parse(gridViewTimHocVien.GetDataRow(i)["MaHV"].ToString()));
                }

                this.Close();
            }
            
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            frmHocVien frmHV = new frmHocVien();
            frmHV.MaHocVienSelected = int.Parse(gridViewTimHocVien.GetDataRow(gridViewTimHocVien.FocusedRowHandle)["MaHocVien"].ToString());
            frmHV.ShowDialog();
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            if (XtraMessageBox.Show("Bạn có chắc chắn muốn thoát khỏi màn hình Tìm Kiếm Học Viên?",
                                    "Thông báo!!!", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.OK)
                this.Close();
        }

        private void checkBoxTinhTrang_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBoxTinhTrang.Checked == false)
            {
                cbxTinhTrang.SelectedItem = -1;
                cbxTinhTrang.Enabled = false;

                checkBoxLopHoc.Checked = false;
                lookUpEditLopHoc.Enabled = false;
                lookUpEditLopHoc.ItemIndex = -1;
            }
            else
            {
                cbxTinhTrang.Enabled = true;
            }
        }

        private void checkBoxLopHoc_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBoxLopHoc.Checked == false)
            {
                lookUpEditLopHoc.ItemIndex = -1;
                lookUpEditLopHoc.Enabled = false;
            }
            else
            {
                lookUpEditLopHoc.Enabled = true;
            }
        }     

        private void checkBoxGioiTinh_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBoxGioiTinh.Checked == false)
            {
                cbxGioiTinh.Enabled = false;
                cbxGioiTinh.SelectedIndex = -1;
            }
            else
            {
                cbxGioiTinh.Enabled = true;
            }
        }

        private void checkBoxHoTen_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBoxTenHV.Checked == false)
            {
                txtTenHV.Enabled = false;
                txtTenHV.Text = string.Empty;
            }
            else
            {
                txtTenHV.Enabled = true;
            }
        }

        private void checkBoxDiaChi_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBoxDiaChi.Checked == false)
            {
                txtDiaChi.Enabled = false;
                txtDiaChi.Text = string.Empty;
            }
            else
            {
                txtDiaChi.Enabled = true;
            }
        }

        private void cbxTinhTrang_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(cbxTinhTrang.SelectedItem != null)
            {
                if (cbxTinhTrang.SelectedItem.ToString() == "Học Viên Tiềm Năng")
                {
                    lookUpEditLopHoc.Enabled = false;
                    lookUpEditLopHoc.ItemIndex = -1;
                }

                if (cbxTinhTrang.SelectedItem.ToString() == "Học Viên Chính Thức")
                {
                    checkBoxLopHoc.Checked = true;
                }
            } 
        }

        private void gridViewTimHocVien_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
        {
            if (e.Column.FieldName == "STT")
                e.DisplayText = (e.ListSourceRowIndex + 1).ToString();

            if (e.Column == TinhTrang)
            {
                e.DisplayText = ((bool)e.Value) == true ? "Học Viên Chính Thức" : "Học Viên Tiềm Năng";
            }


            if (e.Column == GioiTinh)
            {
                e.DisplayText = ((bool)e.Value) == true ? "Nam" : "Nữ";
            }
        }
    }
}